package com.wnxy.pawnbackgroundsystem.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wnxy.pawnbackgroundsystem.entity.Parameter;
import com.wnxy.pawnbackgroundsystem.entity.Property;
import com.wnxy.pawnbackgroundsystem.dao.PropertyMapper;
import com.wnxy.pawnbackgroundsystem.param.AddPropertyParam;
import com.wnxy.pawnbackgroundsystem.param.SelectPropertyParam;
import com.wnxy.pawnbackgroundsystem.param.UpdatePropertyParam;
import com.wnxy.pawnbackgroundsystem.service.IPropertyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;


/**
 * <p>
 * 商品属性表 服务实现类
 * </p>
 *
 * @author Lucas
 * @since 2021-10-14
 */
@Service
public class PropertyServiceImpl extends ServiceImpl<PropertyMapper, Property> implements IPropertyService {
    @Autowired
    private ParameterServiceImpl parameterService;
//    @Autowired
//    private SortServiceImpl sortService;
    @Resource
    private PropertyMapper propertyMapper;

    private SortServiceImpl sortService=new SortServiceImpl();


    @Override
    public void deleteProperty(Integer num) {
         this.removeById(num);
    }

    @Override
    public void updateProperty(UpdatePropertyParam upp) {
        Property one = getOne(new QueryWrapper<Property>().eq(" property_id", upp.getPropertyId()));
        if (one!=null){
            one.setPropertyName(upp.getPropertyName());
            one.setPropertyStatus(upp.getPropertyStatus());
            one.setSortId(upp.getSortId());
            updateById(one);
        }


    }

//    @Override
//    public PropertyPageDto selectProperty(SelectPropertyParam spp) {
//        QueryWrapper<Property> qw = new QueryWrapper<>();
//        PropertyPageDto pd=new PropertyPageDto();
//
//        List<Property> allProperty=list();
//        for (Property property:allProperty){
//            Integer propertyId = property.getPropertyId();
//            List<Parameter> allParameter= parameterService.list(new QueryWrapper<Parameter>().eq("property_id", propertyId));
//            int size = allParameter.size();
//            List<Sort> sort = sortService.list(new QueryWrapper<Sort>().eq("sort_grade", "一级"));
//            for (Sort sort1 : sort) {
//                if(property.getSortId()==sort1.getSortId()){
//                    property.setPropertySortName(sort1.getSortName());
//                }
//            }
//            property.setPropertyNum(size);
//            updateById(property);
//        }
//        Page<Property> p=null;
//        if(null!=spp){
//            if(spp.getPropertyName()!=null){
//                qw.like("property_name", spp.getPropertyName());
//            }
//            if(spp.getPageParam()!=null){
//                System.out.println(spp.getPageParam().getIndexPage());
//                p=new Page<>(spp.getPageParam().getIndexPage(),spp.getPageParam().getSize());
//            }
//        }
//
//        if (p==null){
//            List<Property> properties = list(qw);
//            List<PropertyDto> tds= BeanUtilsExt.copyPropertiesList(PropertyDto.class,properties);
//            pd.setAds(tds);
//        }else{
//            IPage<Property> iPage = page(p, qw);
//            pd.setIndexPage(iPage.getCurrent());
//            pd.setAllCont(iPage.getTotal());
//            List<PropertyDto> tds= BeanUtilsExt.copyPropertiesList(PropertyDto.class,iPage.getRecords());
//            pd.setAds(tds);
//        }
//        return pd;
//    }

    @Override
    public void addProperty(AddPropertyParam addPropertyParam) throws ParseException {
        Property property = getOne(new QueryWrapper<Property>().eq("property_name", addPropertyParam.getPropertyName()));
//        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
//        Date parse = ft.parse(addPropertyParam.getPropertyTtm());
        if(property==null) {
            Property pp = new Property();
            pp.setPropertyName(addPropertyParam.getPropertyName());
            pp.setSortId(addPropertyParam.getSortId());
            pp.setPropertyStatus(addPropertyParam.getPropertyStatus());
            pp.setPropertyFittings(addPropertyParam.getPropertyFittings());
            save(pp);
        }
    }

    @Override
    public List<Property> select(SelectPropertyParam spp) {
        HashMap<String, Object> map = new HashMap<>();
        map.put("propertyName",spp.getPropertyName());
        map.put("pageParam",spp.getPageParam());
        List<Property> select = propertyMapper.select(map);
        for (Property property : select) {
            List<Parameter> propertyId = parameterService.list(new QueryWrapper<Parameter>().eq("property_id", property.getPropertyId()));
            int size = propertyId.size();
            property.setPropertyNum(size);

        }
        return select;
    }

    @Override
    public List<Property> getPropertyName() {

        List<Property> list = list();

        return list;
    }

    public void delManyProperty(List<Integer> intList){

        for(Integer ii:intList){
            this.remove(new UpdateWrapper<Property>().eq("sort_id",ii));
        }


    }
}
